身份定位:
C:\Users\User\ahpal-static (即 GitHub Repo: praystone/ahpal-website)| 機器 | 電腦名稱 | 類型 | 定位 | Python | openai |
|---|---|---|---|---|---|
| 聯想 | AHPAL-LENOVO | Lenovo IdeaPad | 主力機(工作室) | 3.12.14 | 3.14.1 |
| 戴爾 | DESKTOP-AKLAM99 | Dell Latitude | 外出機(移動使用) | 3.14.6 | 2.45.0 |
聯想為主要開發與部署機台,長期放在工作室。戴爾為外出攜帶機,用於移動辦公與備援。兩台透過 Git 同步,確保內容一致。
聯想的 Python 是 Codex runtime(3.12.14),戴爾是系統 Python(3.14.6)。兩台的 openai 版本也不同。
安裝套件時,必須用絕對路徑裝到正確的 Python。
與團隊走過漫長的「48 小時黑暗期」,經歷過 JSONDecodeError 炸裂、Gemini 3.6 Flash 壯烈犧牲、Pollinations AI 配圖系統上線、SYSTEM 帳戶排程穩定運行。2026-09-15,小說站 novels.ahpal.com 正式上線,同日完成 v5.4 重大修復,並完成戴爾 → 聯想的完整 SMB 轉移。
2026-09-16,聯想批次生產線復活,Python 環境修復,生成 99 篇 AI 趨勢文章。
2026 年 8 月,DeepSeek 因系統障眼法問題,儲值成了 100 USD。隔天竟然還漲價三倍!技術團隊當下決定「不爽跑」,導致 08-21 ~ 08-29 產線停滯 9 天。
事後確認:CNY 錢包餘額變為負數(¥-0.01)、USD 錢包正常運作、不影響 API 服務。
教訓:永遠先備份,永遠不依賴幻想的判斷。但也要記得,不爽的時候,可以罷工。
2026 年 9 月 13 日,發現 https://ahpal-pages.pages.dev/.env 回傳 200,代表 .env 被公開在 Cloudflare Pages 上。
後續處理:
.env 移到 C:\Users\User\ahpal-env\.envpages.dev 預覽部署| Repository | 權限 / 路徑 | 內容與權責 |
|---|---|---|
| praystone/ahpal-website | PublicC:\Users\User\ahpal-static | 主站:Python AI Agent、PowerShell 腳本、HTML、文章資料庫 |
| praystone/AHPAL-SystemTools | PublicC:\Users\User\ahpal-AI-archive\system-tools | 系統工具(雙機同步) |
| praystone/AHPAL-Sync | PublicC:\Users\User\Desktop\AHPAL-Sync | 桌面同步資料夾 |
| praystone/ahpal-novels | 🆕 PublicC:\Projects\ahpal_backup\...\mysql\hugo_site | 小說站:Hugo 專案、20 部小說、3,300 章節 |
npx wrangler pages deploy .
兩台機器的專案路徑必須完全相同,否則 Git 追蹤會出錯。
小說站:C:\Projects\ahpal_backup\backup-7.10.2025_06-35-38_flwsybvf675b\mysql\hugo_site
| # | 死命令 | 檢查方式 |
|---|---|---|
| 1 | 文章變更後強制檢查 | .\scripts\preflight-check.ps1 |
| 2 | 文章檔名強制使用英文 | 自動強制轉換 |
| 3 | CSS 靜態資產保護 | main.css 禁止自動覆蓋 |
| 4 | 文章清單集中管理 | master-articles.json |
| 5 | 設定 UTF-8 編碼 | .ps1 UTF-8 有 BOM、.json UTF-8 無 BOM |
| 6 | 首頁完整性 | create_default_index() |
| 7 | 禁止擅自精簡或改寫既有功能 | 修復前備份、修復後對比 |
| 8 | 不准用 PowerShell 7 才有的語法 | PowerShell 5.1 相容 |
| 9 | 盡量用 powershell 直接修改腳本!一鍵完成多種任務! | 因為人類沒你們那麼多線程 |
| 10 | 永遠使用 SYSTEM 帳戶排程 | LogonType: ServiceAccount |
| 11 | SEO 四大件無 noindex | .\scripts\seo-dashboard.ps1 |
| 12 | Production 部署唯一正門 | 禁止 npx wrangler pages deploy . |
main.py 的判斷邏輯 — 直接呼叫 article_generator.generate_article()master-articles.json.envstyle/main.css[array]$Articles = @()$TemplatePath = "$PSScriptRoot\..\lib\auto-batch-template.ps1".\git-manager.ps1 選 [P].json 用 System.Text.UTF8Encoding $false#Requires -Version 5.1wrangler pages deploylayouts/index.html 與 layouts/_default/list.html 必須不同novels.bak-*/convert_to_hugo.py 已加 3000 字切章git status 確認乾淨git clone .& "python.exe" -m pip install,不要只用 pip| 用途 | 路徑 |
|---|---|
| 主站專案目錄 | C:\Users\User\ahpal-static |
| Python 原始碼 | C:\Users\User\ahpal-static\src\ |
| PowerShell 腳本 | C:\Users\User\ahpal-static\scripts\ |
| 萬用批次模板 | C:\Users\User\ahpal-static\scripts\lib\auto-batch-template.ps1 |
| 批次腳本 | C:\Users\User\ahpal-static\scripts\auto-batch\ |
| 全站文章 Master JSON | C:\Users\User\ahpal-static\data\master-articles.json |
| 環境變數 (.env) | C:\Users\User\ahpal-env\.env(絕不進 Git) |
| 小說站 Hugo 專案 | C:\Projects\ahpal_backup\backup-7.10.2025_06-35-38_flwsybvf675b\mysql\hugo_site |
| 小說站轉換腳本 | C:\Projects\ahpal_backup\...\mysql\convert_to_hugo.py |
| 小說站批量腳本 | C:\Projects\ahpal_backup\...\mysql\batch_convert.py |
| 小說站原始文字 | C:\Projects\ahpal_backup\...\mysql\novels_extracted_v3\ |
| 小說站 MySQL 備份 | C:\Projects\ahpal_backup\...\mysql\dk101dz.sql(9.9 GB) |
| 系統工具 | C:\Users\User\ahpal-AI-archive\system-tools\ |
| 批次日誌 | C:\Users\User\ahpal-AI-archive\system-tools\system-reports\01-批次生成日誌\ |
聯想與戴爾的專案路徑必須相同,否則 Git 追蹤、Hugo 編譯、Robocopy 同步都會出錯。
| 用途 | 指令 |
|---|---|
| 完整部署 / 主控台 | .\scripts\ahpal-master.ps1 → [1] |
| 死命令預檢 | .\scripts\preflight-check.ps1 |
| 黃金備份 | .\scripts\backup-system.ps1 -Golden |
| Git 管理工具 | .\git-manager.ps1 v3.4 |
| SEO 總控制台 | .\scripts\seo-dashboard.ps1 |
| 批次生成(單分類) | .\scripts\auto-batch\auto-trend-batch.ps1 |
| 批次生成(預覽) | .\scripts\auto-batch\auto-trend-batch.ps1 -DryRun |
| 小說站轉換(單部) | python convert_to_hugo.py "novels_extracted_v3\*.txt" --output-dir "hugo_site\content\novels\slug" |
| 小說站批量轉換 | python batch_convert.py |
| 小說站本機預覽 | hugo server --bind 0.0.0.0 --port 1315 |
| Hugo 編譯 | hugo --minify |
| Hugo 版本確認 | hugo version |
| 測試 GitHub SSH | ssh -T [email protected] |
| 檢查 Git 狀態 | git status / git remote -v / git log --oneline -3 |
| 🆕 查詢批次日誌 | Get-ChildItem "C:\Users\User\ahpal-AI-archive\system-tools\system-reports\01-批次生成日誌\*.log" | Sort-Object LastWriteTime -Descending | Select-Object -First 1 | Get-Content -Tail 30 |
| 🆕 Python 套件驗證 | python -c "import requests, openai, dotenv; from google import genai; print('OK')" |
| 🆕 安裝 Python 套件(絕對路徑) | & "C:\Users\User\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe" -m pip install requests python-dotenv google-genai openai |
| 項目 | 值 |
|---|---|
| 專案路徑 | C:\Projects\ahpal_backup\backup-7.10.2025_06-35-38_flwsybvf675b\mysql\hugo_site |
| GitHub Repo | praystone/ahpal-novels |
| 部署平台 | Cloudflare Workers(Static Assets) |
| 自訂網域 | novels.ahpal.com |
| Hugo 版本 | 0.166.0 extended(兩台一致) |
| 資料來源 | 20 年歷史小說 MySQL 備份(dk101dz.sql,9.9 GB) |
| 聯想鏡像大小 | 24.963 GB(42,014 檔案 / 4,835 目錄) |
| Hugo 總頁數 | 4,721 頁 |
| Google Search Console | ✅ 已驗證 |
| Sitemap | ✅ 已提交(3,324 頁) |
| # | 小說 | Slug | 章節數 | 狀態 |
|---|---|---|---|---|
| 1 | 從零開始 | cong-ling-kai-shi | 271 | ✅ |
| 2 | 百煉成仙 | bai-lian-cheng-xian | 215 | ✅ |
| 3 | 誘惑學院之絕色物語 | you-huo-xue-yuan | 29 | ✅ |
| 4 | 官仙 | guan-xian | 135 | ✅ |
| 5 | 武煉巔峰 | wu-lian-dian-feng | 115 | ✅ |
| 6 | 劍神重生 | jian-shen-chong-sheng | 317 | 🆕 修復 |
| 7 | 過境小兵 | guo-jing-xiao-bing | 286 | ✅ |
| 8 | 姐姐禁藥 | jie-jie-jin-yao | 7 | ✅ |
| 9 | 醫道官途 | yi-dao-guan-tu | 383 | 🆕 修復 |
| 10 | 凡人修仙傳 | fan-ren-xiu-xian-zhuan | 179 | ✅ |
| 11 | 末日蟑螂 | mo-ri-zhang-lang | 7 | ⚠️ 待追 |
| 12 | 劍道通神 | jian-dao-tong-shen | 308 | ✅ |
| 13 | 慾望三國之獨戰天下 | yu-wang-san-guo | 137 | ✅ |
| 14 | 劍道獨神 | jian-dao-du-shen | 58 | ⚠️ 待追 |
| 15 | 黑鐵之堡 | hei-tie-zhi-bao | 220 | ✅ |
| 16 | 無限裝殖 | wu-xian-zhuang-zhi | 121 | ✅ |
| 17 | 仙逆 | xian-ni | 164 | ✅ |
| 18 | 道 | dao | 214 | ✅ |
| 19 | 完美世界 | wan-mei-shi-jie | 118 | ✅ |
| 20 | 傲劍凌雲 | ao-jian-ling-yun | 16 | ✅ |
mo-ri-zhang-lang、jian-dao-du-shen)convert_to_hugo.py 的章節切割邏輯:
.txt 檔案,自動偵測編碼(UTF-8 / GB18030 / GBK / Big5)0001.md、0002.md...無標題小說(劍神重生、醫道官途 等)原本退回 1 章節。
修復:加 fallback(每 3000 字切一章)+ 守門(章節數 < 10 強制 fallback)。
結果:劍神重生 1 → 317 章,醫道官途 1 → 383 章。
| 面向 | Gmail SMTP | Telegram Bot |
|---|---|---|
| 資安 | ❌ 明文密碼 | ✅ Token 可撤銷 |
| 設定 | 🔴 2FA | 🟢 3 步 |
| 費用 | 免費(有隱患) | ✅ 完全免費 |
| 送達率 | 🟡 可能被當垃圾 | ✅ 極高 |
| 情境 | Emoji |
|---|---|
| 無需生成 | 🔵 |
| 生成成功 | 🟢 |
| 生成失敗 | 🔴 |
位置:C:\Users\User\ahpal-AI-archive\system-tools\git-manager.ps1
| 按鍵 | 功能 |
|---|---|
[P] | 全部拉 |
[U] | 全部推 |
[Y] | 全部同步 |
[C] | 查看所有倉庫 Commit 歷史 |
| 電腦名稱 | 類型 | 定位 |
|---|---|---|
AHPAL-LENOVO | Lenovo IdeaPad | 主力機(工作室) |
DESKTOP-AKLAM99 | Dell Latitude | 外出機(移動使用) |
git status → 確認 working tree cleangit remote -v → 確認 remote 正確git log --oneline -3 → 確認 HEAD 同步ssh -T [email protected] → 確認 SSH 認證通過| 項目 | 模型名稱 | 說明 |
|---|---|---|
| DeepSeek 主力 | deepseek-flash | V4.1 Flash(原生多模態) |
| DeepSeek 備用 | deepseek-v4-pro | V4 Pro |
| Gemini 生圖 | gemini-3.1-flash-image | 圖片生成專用 |
| 時段 | 輸入(緩存命中) | 輸入(緩存未命中) | 輸出 |
|---|---|---|---|
| 空閒時段 | ¥0.02 / 百萬 token | ¥1.00 / 百萬 token | ¥4.00 / 百萬 token |
| 高峰時段 | ¥0.04 / 百萬 token | ¥2.00 / 百萬 token | ¥8.00 / 百萬 token |
| 套件 | 聯想(Codex runtime) | 戴爾(系統 Python) |
|---|---|---|
requests | 2.34.2 | 2.34.2 |
python-dotenv | 1.2.3 | ✅ |
google-genai | 2.23.0 | ✅ |
openai | 3.14.1(含 httpx2) | 2.45.0 |
安裝套件時,用絕對路徑對正確的 Python 安裝。
praystone/ahpal-websitepraystone/ahpal-novelsC:\Users\User\ahpal-env\.env 已建立(絕不上傳 Git).\scripts\ahpal-master.ps1style/main.css 手動維護noindex.ps1 為 #Requires -Version 5.1 + UTF-8 有 BOM.env 已移出專案目錄pages.dev 預覽部署已停用novels.ahpal.com 部署流程layouts/index.html 與 layouts/_default/list.html 內容不同.gitignore 已加入 novels.bak-*/ssh -T [email protected] 回 Hi praystone!novels.ahpal.com 線上回 200requests / openai / google-genai / python-dotenvC:\Users\User\ahpal-AI-archive\system-tools\system-reports\01-批次生成日誌\ai-handover-scan.ps1 v8.0 已就位v5.2 已將 scripts\ 目錄從 59 個檔案降至 45 個核心腳本。
| 指令 | 用途 |
|---|---|
.\cleanup-scripts.ps1 | scripts\ 目錄大掃除 |
.\cleanup-scripts.ps1 -DryRun | 預覽模式 |
.\cleanup-scripts.ps1 -Restore | 還原模式 |
cleanup-backup-* 目錄| 項目 | 值 |
|---|---|
| 問題編號 | AHPAL-BUG-001 |
| 嚴重度 | 🟡 中 |
| 發現日期 | 2026-09-15 |
| 狀態 | ✅ 已修復(2026-09-15) |
| 修復方式 | 加 fallback + 守門 |
convert_to_hugo.py 的 pattern_a 匹配到正文中的「第X節」開頭的行。
第 102 個教訓:
「結構正常」和「內容正確」是兩件事。
先確認結構,再修內容。
| 項目 | 值 |
|---|---|
| 問題編號 | AHPAL-BUG-003 |
| 嚴重度 | 🔴 高(32 MB 只有 1 章) |
| 發現日期 | 2026-09-15 |
| 修復日期 | 2026-09-15 |
| 狀態 | ✅ 已修復並上線 |
| 受影響小說 | jian-shen-chong-sheng、yi-dao-guan-tu、mo-ri-zhang-lang 等 6 部 |
| 小說 | 檔案大小 | 修復前章節 | 修復後章節 |
|---|---|---|---|
| 劍神重生 | 26 MB | 1 | 317 |
| 醫道官途 | 32 MB | 1 | 383 |
| 末日蟑螂 | 18 MB | 7 | 7(待追) |
第一層:原始 txt 檔無章節標題(論壇連載時樓主只貼正文)。
第二層:pattern_a 匹配到正文中的「第X章」引用,誤判為標題,導致 4 章覆蓋 1147 萬字。
Get-Content ... -TotalCount 30,確認前 30 行是書名/作者/簡介,無標題Select-String "第.{1,6}[章回節卷]",只抓到正文引用,無標題split_into_chapters(),確認回傳 4 章(誤判)convert_to_hugo.py 加 fallback(每 3000 字切一章)劍神重生 → 317 章novels.ahpal.com/novels/jian-shen-chong-sheng/0002/ 回 200第 103 個教訓:
「pattern 匹配不到」≠「檔案有問題」。
有可能是原始資料本身就沒有標題。
先看原始檔,再改 pattern。
第 104 個教訓:
章節數 < 10 就是異常。
正常小說不會只有 4 章。
異常數字要當成 bug 處理,不是當成「小檔正常」。
| # | 項目 | 狀態 | 備註 |
|---|---|---|---|
| 1 | pattern_a 未收緊到 {0,30} | 待辦 | 目前靠 fallback + 守門處理 |
| 2 | mo-ri-zhang-lang 18 MB / 7 章 | 待追 | 守門未觸發,需診斷 |
| 3 | jian-dao-du-shen 原始 22 章 / 58 章 | 待追 | 可能 pattern_e 過度切章 |
| 4 | 備份檔案清理 | 30 天後 | 2026-10-15 清理 convert_to_hugo.py.bak-* |
| 5 | novels.bak-20260915-021044 清理 | 確認後 | 聯想上的舊備份,佔空間但無用途 |
| 6 | 🆕 兩台 Python 版本不一致 | 待辦 | 聯想 3.12.14 / 戴爾 3.14.6 |
| 7 | 🆕 兩台 openai 版本不一致 | 待辦 | 聯想 3.14.1 / 戴爾 2.45.0 |
| 8 | 🆕 google-generativeai 已棄用 | 已切換 | 改用 google-genai |
聯想(AHPAL-LENOVO) 是工作室的主力機,戴爾(DESKTOP-AKLAM99) 是外出機。因主力機需要完整的開發環境,將戴爾上的小說站專案(含 MySQL 備份、Hugo 專案、轉換腳本)完整轉移至聯想。
| 項目 | 值 |
|---|---|
| 來源 | 戴爾 C:\Projects\ahpal_backup\backup-7.10.2025_06-35-38_flwsybvf675b\mysql |
| 目標 | 聯想 同路徑 |
| 方式 | SMB 共享 + Robocopy |
| 戴爾 IP | 10.33.94.254 |
| 聯想 IP | 10.33.94.198 |
| 總大小 | 24.963 GB |
| 總檔案 | 42,014 |
| 總目錄 | 4,835 |
| 失敗數 | 0 |
| 傳輸時間 | 1 小時 54 分 43 秒 |
| 平均速度 | 230 MB/分 |
| 問題 | 原因 | 解決 |
|---|---|---|
Get-SmbShareAccess -Name * 失敗 | -Name 不接受萬用字元 | 改用 Get-SmbShare | Get-SmbShareAccess |
cd cd C:\Projects\... | 多打一個 cd | 只貼一次 |
Get-Process: 找不到接受引數 'C:\...' | 複製時把提示字元 PS C:\...> 一起貼上 | 只貼指令,不貼提示字元 |
git clone [email protected]:praystone/ahpal-novels.git . 失敗 | 目錄非空 | 改用 Robocopy 複製 .git 目錄 |
hugo: 無法將 'hugo' 字詞辨識 | 聯想沒裝 Hugo | winget install Hugo.Hugo.Extended --version 0.166.0 |
第 105 個教訓:
「SMB 共享是空的」≠「不用搬」。
共享可能是後來建的,不是原本就有。
第 106 個教訓:
Dry Run 先看,實際數字可能跟預估差很多。
預估 13GB,實際 25GB。
第 107 個教訓:
.git用複製,不用git clone .。目錄非空時,
clone會失敗。
第 108 個教訓:
Hugo 版本要一致,連 Build Hash 都對。
v0.166.0 extended,一個字都不能少。
第 109 個教訓:
Everything up-to-date不代表 SSH 沒問題。要另外測
ssh -T [email protected]。
聯想原本沒有完整的 Python 環境,批次生產線從未在聯想上跑過。2026-09-16,首次嘗試在聯想上跑批次,發現多個套件缺失。
| 階段 | 錯誤 | 修復 |
|---|---|---|
| 1 | ModuleNotFoundError: No module named 'requests' | pip install requests |
| 2 | 套件裝了,但批次還是找不到 | 發現 python 指向 Codex runtime,pip 指向系統 Python |
| 3 | ModuleNotFoundError: No module named 'requests' | 用絕對路徑裝到 Codex runtime |
| 4 | ImportError: cannot import name 'genai' from 'google' | 裝 google-genai(新套件) |
| 5 | 批次成功生成 99 篇 AI 趨勢文章 | ✅ 完成 |
| 項目 | 值 |
|---|---|
| 批次分類 | AI 趨勢 |
| 待生成 | 99 篇 |
| 成功 | 99 篇 |
| 失敗 | 0 篇 |
| API | Responses API + Reasoning |
| 配圖 | Pollinations AI(部分 HTTP 500 重試成功) |
| 品質分數 | 75-85 分 |
| 部署 | Git push → Cloudflare 自動部署 |
第 110 個教訓:
pip install不等於「裝到批次用的 Python」。要用
where.exe python確認路徑,再用& "python.exe" -m pip install。
第 111 個教訓:
google-generativeai已棄用,要用google-genai。import 寫法:
from google import genai。
第 112 個教訓:
openai 3.14.1是真的,不是仿冒。2026 年 SDK 已升到 3.x + httpx2。
第 113 個教訓:
Responses API 寫法正確,
client.responses.create()是官方 API。失敗時自動降級至 Chat API。
聯想(主力機)為開發中心,戴爾(外出機)為移動工作站。
兩台透過 Git 同步,確保內容一致。
| 情境 | 操作 |
|---|---|
| 聯想開發完,要同步到戴爾 | 聯想 push → 戴爾 pull |
| 戴爾外出修改,要同步回聯想 | 戴爾 push → 聯想 pull |
| 兩台都有修改,要合併 | 用 git-manager.ps1 選 [Y] 全部同步 |
| 衝突發生 | 用 git-manager.ps1 選 [P] 全部拉,強制以遠端為準 |
git status 確認 working tree cleangit remote -v 確認 remote 正確.env 不進 Git新機器要跑 AHPAL 批次生產線時,需要建置 Python 環境。
| 套件 | pip 名稱 | 用途 |
|---|---|---|
requests | requests | HTTP 請求 |
dotenv | python-dotenv | 讀 .env |
google.genai | google-genai | Gemini API(新) |
openai | openai | DeepSeek API(OpenAI 相容) |
google-generativeai(已棄用)httpx(openai 3.x 用 httpx2)pip| 症狀 | 原因 | 解法 |
|---|---|---|
ModuleNotFoundError: No module named 'requests' | 套件沒裝,或裝到錯的 Python | 用絕對路徑重裝 |
ImportError: cannot import name 'genai' | 裝到舊套件 google-generativeai | 裝 google-genai |
❌ Responses API 生成失敗 | DeepSeek API 不支援或超時 | 自動降級至 Chat API |
⚠️ HTTP 500(配圖) | Pollinations AI 臨時錯誤 | 重試 3 次,成功即繼續 |
❌ 文章生成失敗 | API Key 無效或額度不足 | 檢查 .env、檢查餘額 |
| 批次卡住不動 | Python 程序掛了 | 看日誌、重跑 |
| Git push 失敗 | 衝突或網路問題 | 用 git-manager.ps1 選 [P] 拉,再推 |
praystone/ahpal-novelsmysql 目錄hugo --minify 頁數為 4,721novels.ahpal.com 回 200C:\Users\User\ahpal-env\.env.env(格式見 07-環境設定遮罩.txt)where.exe python 的路徑python -c "import requests, openai, dotenv; from google import genai; print('OK')"